#ifndef VIDHUB_H
#define VIDHUB_H

#include <QWidget>
#include <QMouseEvent>

QT_BEGIN_NAMESPACE
namespace Ui {
class VidHub;
}
QT_END_NAMESPACE

enum StackedWidgetPage{
    HomePage, MyselfPage, AdminPage, UploadPage
};


class VidHub : public QWidget
{
    Q_OBJECT

public:
    ~VidHub();

    static VidHub* getInstance();

    // 该方法内部只桌UI界面切换，不做数据的更新处理
    void onSwitchPageUI(int pageId);

    // 是否显⽰系统⻚⾯按钮
    void showSystemPageBtn(bool isShow = true);

    // 切换到其他用户页面，即我的页面但显示其他用户信息
    void switchToUserInfoPage(const QString& userId);

private:
    VidHub(QWidget *parent = nullptr);

    // 初始化UI界面
    void initUI();

    // 绑定信号槽
    void connectSigalsAndSlots();

    // 处理 "拖动"事件: 鼠标点击事件 + 鼠标移动事件
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent* event);

    // 重置页面切换按钮
    void resetswitchBtnInfo(int pageId);


private slots:
    void onSwitchPage(int pageId);

private:
    Ui::VidHub *ui;

    QPoint dragPos; // 相对距离: 鼠标点击时和程序窗口

    static VidHub* instance;
};

#endif // VIDHUB_H
